/*
 * SOPDetector.h
 *
 *  Created on: Mar 18, 2013
 *      Author: shuai
 */

#ifndef SOPDETECTORSTATE_H_
#define SOPDETECTORSTATE_H_

#include <iostream>

class SOPDetectorState
{
	public:
		SOPDetectorState();
		SOPDetectorState(std::string idValue,
					unsigned int vehContrib,
					float flowValue,
					float occupancyValue,
					float speedValue,
					float lengthValue,
					unsigned int nVehEnteredValue);
		virtual ~SOPDetectorState();

	private:
		/* Detector id */
		std::string id;

		/* The number of vehicles that have completely passed the detector */
		unsigned int nVehContrib;

		/* The number of contributing vehicles extrapolated to an hour */
		float flow;

		/* The percentage (0-100%) of the time a vehicle was at the detector */
		float occupancy;

		/* The mean velocity of all completely collected vehicles */
		float speed;

		/* The mean length of all completely collected vehicles */
		float length;

		/*
		 * All vehicles that have touched the detector.
		 * Includes vehicles which have not passed the detector completely
		 */
		unsigned int nVehEntered;

	public:
		/* Get detector id */
		std::string GetId();

		/* Set detector id */
		void SetId(std::string value);

		/* Get nVehContrib */
		unsigned int GetVehContrib();

		/* Set nVehContrib */
		void SetVehContrib(unsigned int value);

		/* Get flow */
		float GetFlow();

		/* Set flow */
		void SetFlow(float value);

		/* Get occupancy */
		float GetOccupancy();

		/* Set occupancy */
		void SetOccupancy(float value);

		/* Get speed */
		float GetSpeed();

		/* Set speed */
		void SetSpeed(float value);

		/* Get length */
		float GetLength();

		/* Set length */
		void SetLength(float value);

		/* Get nVehEntered */
		unsigned int GetVehEntered();

		/* Set VehEntered */
		void SetVehEntered(unsigned int value);
};

#endif /* SOPDETECTORSTATE_H_ */
